#ifndef PICCOLO_GRAPHICS_CONTEXT_H
#define PICCOLO_GRAPHICS_CONTEXT_H

#include "PiccoloEngine.h"

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE

#include "glm/glm.hpp"
#include "glm/gtc/matrix_transform.hpp"
#include "glm/gtx/quaternion.hpp"
#include "glm/gtc/random.hpp"
#include "glm/gtc/type_ptr.hpp"

namespace Piccolo
{
    class PiccoloWindow;

    class PiccoloGraphicsContext
    {
    public:
        PiccoloGraphicsContext(const PiccoloGraphicsContext&) = delete;
        PiccoloGraphicsContext &operator=(const PiccoloGraphicsContext&) = delete;

        virtual ~PiccoloGraphicsContext() = default;

        static std::unique_ptr<PiccoloGraphicsContext> Create(PiccoloWindow* window);

    protected:
        PiccoloGraphicsContext() = default;
    };
}

#endif